home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 60 / 60.xpi / chrome / webdeveloper.jar / content / webdeveloper / dashboard / edit_html.js < prev    next >
Encoding:
Text File  |  2009-06-30  |  8.6 KB  |  261 lines

  1. var webdeveloper_editHTMLIntervalId      = null;
  2. var webdeveloper_editHTMLOldHTML         = null;
  3. var webdeveloper_editHTMLSelectedTab     = 0;
  4. var webdeveloper_editHTMLUpdateFrequency = 500;
  5.  
  6. // Applies the HTML
  7. function webdeveloper_applyHTML()
  8. {
  9.     var contentBody = webdeveloper_getDocumentBodyElement(webdeveloper_getContentDocument());
  10.     var newHTML     = document.getElementById("webdeveloper-edit-html-text-box").value;
  11.  
  12.     // If the content body is set and the new HTML is not the same as the old HTML
  13.     if(contentBody && newHTML != webdeveloper_editHTMLOldHTML)
  14.     {
  15.         contentBody.innerHTML        = newHTML;
  16.         webdeveloper_editHTMLOldHTML = newHTML;
  17.     }
  18. }
  19.  
  20. // Clear the HTML
  21. function webdeveloper_clearHTML()
  22. {
  23.     document.getElementById("webdeveloper-edit-html-text-box").value = "";
  24. }
  25.  
  26. // Reinitializes the dashboard when the page changes
  27. function webdeveloper_editHTMLPageLoad(event)
  28. {
  29.     // If the content document is set
  30.     if(webdeveloper_getPageLoadEventContentDocument(event))
  31.     {
  32.         // If the page is generated
  33.         if(event.originalTarget.documentURI == "about:blank")
  34.         {
  35.             window.clearInterval(webdeveloper_editHTMLIntervalId);
  36.             window.setTimeout(webdeveloper_retrieveHTML, 1000);
  37.             window.setTimeout(webdeveloper_updateHTML, 1000);
  38.         }
  39.         else
  40.         {
  41.             webdeveloper_retrieveHTML();
  42.         }
  43.     }
  44. }
  45.  
  46. // Handles a browser tab being selected
  47. function webdeveloper_editHTMLTabSelect(event)
  48. {
  49.     var browser     = window.top.getBrowser();
  50.     var selectedTab = browser.mTabBox.selectedIndex;
  51.  
  52.     // If the selected tab is different
  53.     if(selectedTab != webdeveloper_editHTMLSelectedTab)
  54.     {
  55.         browser.browsers[webdeveloper_editHTMLSelectedTab].contentDocument.location.reload(false);
  56.  
  57.         webdeveloper_editHTMLSelectedTab = selectedTab;
  58.  
  59.         webdeveloper_retrieveHTML();
  60.     }
  61. }
  62.  
  63. // Initializes the edit HTML dashboard
  64. function webdeveloper_initializeEditHTML()
  65. {
  66.     var windowContent = window.top.getBrowser();
  67.  
  68.     // If the window content is set
  69.     if(windowContent)
  70.     {
  71.         var tabBox       = windowContent.mTabBox;
  72.         var textBox      = document.getElementById("webdeveloper-edit-html-text-box");
  73.         var textBoxStyle = "";
  74.     
  75.         webdeveloper_editHTMLSelectedTab     = tabBox.selectedIndex;
  76.         webdeveloper_editHTMLUpdateFrequency = webdeveloper_getIntegerPreference("webdeveloper.edit.update.frequency", true);
  77.     
  78.         document.getElementById("webdeveloper-search-dashboard-text").addEventListener("keypress", webdeveloper_searchTextKeyPress, false);
  79.         
  80.         windowContent.addEventListener("load", webdeveloper_editHTMLPageLoad, true);
  81.  
  82.         // If the tab box is set
  83.         if(tabBox)
  84.         {
  85.             tabBox.addEventListener("select", webdeveloper_editHTMLTabSelect, false);
  86.         }
  87.  
  88.         // If the edit background color preference is set
  89.         if(webdeveloper_isPreferenceSet("webdeveloper.edit.color.background"))
  90.         {
  91.             textBoxStyle += "background-color: " + webdeveloper_getStringPreference("webdeveloper.edit.color.background", true) + " !important; ";
  92.         }
  93.     
  94.         // If the edit text color preference is set
  95.         if(webdeveloper_isPreferenceSet("webdeveloper.edit.color.text"))
  96.         {
  97.             textBoxStyle += "color: " + webdeveloper_getStringPreference("webdeveloper.edit.color.text", true) + " !important; ";
  98.         }
  99.     
  100.         // If the edit CSS font preference is set
  101.         if(webdeveloper_isPreferenceSet("webdeveloper.edit.font.size"))
  102.         {
  103.             textBoxStyle += "font-size: " + webdeveloper_getIntegerPreference("webdeveloper.edit.font.size", true) + "px !important; ";
  104.         }
  105.     
  106.         textBox.setAttribute("style", textBoxStyle.trim());
  107.     
  108.         webdeveloper_retrieveHTML();
  109.         webdeveloper_updateHTML();
  110.     }
  111. }
  112.  
  113. // Resets the edited HTML
  114. function webdeveloper_resetHTML()
  115. {
  116.     window.top.BrowserReload();
  117. }
  118.  
  119. // Retrieves the HTML
  120. function webdeveloper_retrieveHTML()
  121. {
  122.     var contentBody = webdeveloper_getDocumentBodyElement(webdeveloper_getContentDocument());
  123.     var textBox     = document.getElementById("webdeveloper-edit-html-text-box");
  124.  
  125.     // If the content body is set
  126.     if(contentBody)
  127.     {
  128.         textBox.value = contentBody.innerHTML;
  129.     }
  130.  
  131.     webdeveloper_applyHTML();
  132. }
  133.  
  134. // Saves the HTML
  135. function webdeveloper_saveHTML()
  136. {
  137.     var contentDocument = webdeveloper_getContentDocument();
  138.     var filePicker      = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
  139.     var result          = null;
  140.     var stringBundle    = document.getElementById("webdeveloper-string-bundle");
  141.     var url             = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURL);
  142.  
  143.     url.spec                    = contentDocument.documentURI;
  144.     filePicker.defaultExtension = url.fileExtension;
  145.     filePicker.defaultString    = url.fileName;
  146.  
  147.     filePicker.init(window, stringBundle.getString("webdeveloper_saveHTML"), filePicker.modeSave);
  148.  
  149.     result = filePicker.show();
  150.  
  151.     // If the user selected a file
  152.     if(result == filePicker.returnOK || result == filePicker.returnReplace)
  153.     {
  154.         var file                       = filePicker.file;
  155.         var webBrowserPersistInterface = Components.interfaces.nsIWebBrowserPersist;
  156.         var webBrowserPersist          = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(webBrowserPersistInterface);
  157.  
  158.         webBrowserPersist.persistFlags = webBrowserPersistInterface.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION | webBrowserPersistInterface.PERSIST_FLAGS_FROM_CACHE | webBrowserPersistInterface.PERSIST_FLAGS_REPLACE_EXISTING_FILES;
  159.  
  160.         // If the file does not exist
  161.         if(!file.exists())
  162.         {
  163.             file.create(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 00644);
  164.         }
  165.  
  166.         webBrowserPersist.saveDocument(contentDocument, file, null, contentDocument.contentType, webBrowserPersistInterface.ENCODE_FLAGS_ENCODE_BASIC_ENTITIES, 0);
  167.     }
  168. }
  169.  
  170. // Searches the HTML
  171. function webdeveloper_searchHTML()
  172. {
  173.     var searchText = document.getElementById("webdeveloper-search-dashboard-text").value;
  174.  
  175.     // If the search text is set
  176.     if(searchText)
  177.     {
  178.         document.getElementById("webdeveloper-edit-html-text-box").focus();
  179.  
  180.         // If the search failed to find a match
  181.         if(!window.find(searchText, false, false, true, false, false, false))
  182.         {
  183.             document.getElementById("webdeveloper-edit-html-text-box").setSelectionRange(0, 0);
  184.             window.find(searchText, false, false, true, false, false, false);
  185.         }
  186.     }
  187. }
  188.  
  189. // Searches the HTML when the enter key is pressed
  190. function webdeveloper_searchTextKeyPress(event)
  191. {
  192.     var keyCode = event.keyCode;
  193.  
  194.     // If the key code is set and is 13
  195.     if(keyCode && keyCode == 13)
  196.     {
  197.         webdeveloper_searchHTML();
  198.     }
  199. }
  200.  
  201. // Uninitializes edit HTML
  202. function webdeveloper_uninitializeEditHTML()
  203. {
  204.     var windowContent = window.top.getBrowser();
  205.  
  206.     webdeveloper_editHTMLOldHTML = null;
  207.  
  208.     window.clearInterval(webdeveloper_editHTMLIntervalId);
  209.  
  210.     // Try to remove the event listener
  211.     try
  212.     {
  213.         document.getElementById("webdeveloper-search-dashboard-text").removeEventListener("keypress", webdeveloper_searchTextKeyPress, false);
  214.     }
  215.     catch(exception)
  216.     {
  217.         // Do nothing
  218.     }
  219.  
  220.     // If the window content is set
  221.     if(windowContent)
  222.     {
  223.         var tabBox = windowContent.mTabBox;
  224.             
  225.         // Try to remove the event listener
  226.         try
  227.         {
  228.             windowContent.removeEventListener("load", webdeveloper_editHTMLPageLoad, true);
  229.         }
  230.         catch(exception)
  231.         {
  232.             // Do nothing
  233.         }
  234.  
  235.         // If the tab box is set
  236.         if(tabBox)
  237.         {
  238.             // Try to remove the event listener
  239.             try
  240.             {
  241.                 tabBox.removeEventListener("select", webdeveloper_editHTMLTabSelect, false);
  242.             }
  243.             catch(exception)
  244.             {
  245.                 // Do nothing
  246.             }
  247.         }
  248.     }
  249.  
  250.     window.top.BrowserReload();
  251. }
  252.  
  253. // Updates the HTML
  254. function webdeveloper_updateHTML()
  255. {
  256.     // If the update frequency is greater than 0
  257.     if(webdeveloper_editHTMLUpdateFrequency > 0)
  258.     {
  259.         webdeveloper_editHTMLIntervalId = window.setInterval(webdeveloper_applyHTML, webdeveloper_editHTMLUpdateFrequency);
  260.     }
  261. }